home *** CD-ROM | disk | FTP | other *** search
/ MacFormat 1995 July / macformat-026.iso / mac / Shareware City / Science / µSim 1.0 folder / Libs / Conversions.c next >
Encoding:
C/C++ Source or Header  |  1994-09-11  |  1.6 KB  |  117 lines  |  [TEXT/MMCC]

  1. #include    "Conversions.h"
  2.  
  3. //#pragma smart_code
  4.  
  5. char *NumToHex2(unsigned long n, short digits);
  6.  
  7. /*
  8.  * NumToHex - fixed length, returns a C string
  9.  */
  10. Ptr ShortToHexText(short n, Ptr text)
  11. {
  12. const char *conv = "0123456789ABCDEF";
  13. register short    i;
  14.  
  15. text += 4;
  16. for (i = 4; i != 0; n >>= 4, --i)
  17.     *--text = conv[n & 0xf];
  18. text += 4;
  19. return text;
  20. }
  21.  
  22. /*
  23.  * NumToHex2 -- allows variable length, returns a Pascal string.
  24.  */
  25.  
  26. void ShortToHexString(short n, Str255 out)
  27. {
  28. const char *conv = "0123456789ABCDEF";
  29. register short    i;
  30.  
  31. *out++ = 4;
  32. out += 4;
  33. for (i = 4; i != 0; n >>= 4, --i)
  34.     *--out = conv[n & 0xf];
  35. return;
  36. }
  37.  
  38. void ShortToOctString(short n, Str255 out)
  39. {
  40. const char *conv = "01234567";
  41. register short    i;
  42.  
  43. *out++ = 6;
  44. out += 6;
  45. for (i = 5; i != 0; n >>= 3, --i)
  46.     *--out = conv[n & 0x7];
  47. *--out = conv[n & 0x1];
  48. return;
  49. }
  50.  
  51. void ShortToBinString(short n, Str255 out)
  52. {
  53. const char *conv = "01";
  54. register short    i;
  55.  
  56. *out++ = 16;
  57. out += 16;
  58. for (i = 16; i != 0; n >>= 1, --i)
  59.     *--out = conv[n & 0x1];
  60. return;
  61. }
  62.  
  63. void HexStringToShort(ConstStr255Param in, short *p)
  64. {
  65. register short tmp, i, ris = 0;
  66.  
  67. i = *in++;
  68. i--;
  69. i <<= 2;
  70. for ( ; i >= 0; i -= 4 ) {
  71.     tmp = *in++;
  72.     tmp -= 48;
  73.     if (tmp > 9)
  74.         tmp -= 7;
  75.     tmp <<= i;
  76.     ris += tmp;
  77.     }
  78. *p = ris;
  79. return;
  80. }
  81.  
  82. void OctStringToShort(ConstStr255Param in, short *p)
  83. {
  84. register short tmp, i, ris = 0;
  85.  
  86. i = *in++;
  87. i--;
  88. tmp = i;
  89. i <<= 1;
  90. i += tmp;
  91. for ( ; i >= 0; i -= 3 ) {
  92.     tmp = *in++;
  93.     tmp -= 48;
  94.     tmp <<= i;
  95.     ris += tmp;
  96.     }
  97. *p = ris;
  98. return;
  99. }
  100.  
  101. void BinStringToShort(ConstStr255Param in, short *p)
  102. {
  103. register short tmp, i, ris = 0;
  104.  
  105. i = *in++;
  106. i--;
  107. for ( ; i >= 0; i-- ) {
  108.     tmp = *in++;
  109.     tmp -= 48;
  110.     tmp <<= i;
  111.     ris |= tmp;
  112.     }
  113. *p = ris;
  114. return;
  115. }
  116.  
  117.